INCLUDEDIR = Headers
OBJDIR = Objects
SRCDIR = Sources

CFLAGS = -I$(INCLUDEDIR) -g

CLIENT_OBJ	=		$(OBJDIR)/client.o $(OBJDIR)/comm_tcp.o\
				$(OBJDIR)/crazy.o $(OBJDIR)/shared.o\
				$(OBJDIR)/winbufADT.o $(OBJDIR)/msgqueue.o\
				$(OBJDIR)/comm_msgq.o $(OBJDIR)/comm_fifo.o\
				$(OBJDIR)/comm_shm.o $(OBJDIR)/sem.o

SERVER_OBJ	=		$(OBJDIR)/server.o $(OBJDIR)/list.o\
				$(OBJDIR)/msgqueue.o $(OBJDIR)/shared.o $(OBJDIR)/sem.o


all: client server

client: $(CLIENT_OBJ)
	gcc $(CFLAGS) $(CLIENT_OBJ) -lpthread -lncurses -o client

server: $(SERVER_OBJ)
	gcc $(CFLAGS) $(SERVER_OBJ) -o server

clean:
	rm -f *~
	rm -f $(OBJDIR)/*.o
	rm -f client
	rm -f server
	
$(OBJDIR)/sem.o:	$(SRCDIR)/sem.c
	gcc $(CFLAGS) -c $(SRCDIR)/sem.c -o $(OBJDIR)/sem.o	
	
$(OBJDIR)/client.o:	$(SRCDIR)/client.c
	gcc $(CFLAGS) -c $(SRCDIR)/client.c -o $(OBJDIR)/client.o

$(OBJDIR)/comm_tcp.o: $(SRCDIR)/comm_tcp.c
	gcc $(CFLAGS) -c $(SRCDIR)/comm_tcp.c -o $(OBJDIR)/comm_tcp.o

$(OBJDIR)/crazy.o: $(SRCDIR)/crazy.c
	gcc $(CFLAGS) -c $(SRCDIR)/crazy.c -o $(OBJDIR)/crazy.o

$(OBJDIR)/shared.o: $(SRCDIR)/shared.c
	gcc $(CFLAGS) -c $(SRCDIR)/shared.c -o $(OBJDIR)/shared.o

$(OBJDIR)/winbufADT.o: $(SRCDIR)/winbufADT.c
	gcc $(CFLAGS) -c $(SRCDIR)/winbufADT.c -o $(OBJDIR)/winbufADT.o

$(OBJDIR)/comm_msgq.o: $(SRCDIR)/comm_msgq.c
	gcc $(CFLAGS) -c $(SRCDIR)/comm_msgq.c -o $(OBJDIR)/comm_msgq.o
	
$(OBJDIR)/comm_fifo.o: $(SRCDIR)/comm_fifo.c
	gcc $(CFLAGS) -c $(SRCDIR)/comm_fifo.c -o $(OBJDIR)/comm_fifo.o

$(OBJDIR)/comm_shm.o: $(SRCDIR)/comm_shm.c
	gcc $(CFLAGS) -c $(SRCDIR)/comm_shm.c -o $(OBJDIR)/comm_shm.o

$(OBJDIR)/server.o: $(SRCDIR)/server.c
	gcc $(CFLAGS) -c $(SRCDIR)/server.c -o $(OBJDIR)/server.o

$(OBJDIR)/list.o: $(SRCDIR)/list.c
	gcc $(CFLAGS) -c $(SRCDIR)/list.c -o $(OBJDIR)/list.o

$(OBJDIR)/msgqueue.o: $(SRCDIR)/msgqueue.c
	gcc $(CFLAGS) -c $(SRCDIR)/msgqueue.c -o $(OBJDIR)/msgqueue.o


copy:	
	cp client Sources
	cp server Sources
	cp active Sources
	rm client
	rm server
	rm active
